//
//  WPUserAccount.swift
//  WB
//
//  Created by 汪鹏 on 2016/12/30.
//  Copyright © 2016年 汪鹏. All rights reserved.
//  用户账户数据模型

import UIKit

let userAccountFile: NSString = "userAccount.json"

class WPUserAccount: NSObject {

    // 登陆令牌
    var access_token:String? // = "2.00hHAxbFWixEcD4618d8f1aaFVDHjC"
    // 用户的id
    var uid:String?
    // token的过期时间（单位是秒）
    var expires_in:TimeInterval = 0{
        didSet{
            expires_date = Date(timeIntervalSinceNow: expires_in)
        }
    }
    
    // 用户昵称
    var screen_name:String?
    
    // 用户头像地址（大图）
    var avatar_large:String?
    
    // 过期日期
    var expires_date:Date?
    
    
    /// 重写构造方法
    override init() {
        
        super.init()
        
        // 读取磁盘用户账户信息
        guard let filepath = userAccountFile.cz_appendDocumentDir(),
                  let data = try? NSData(contentsOfFile: filepath , options: []),
        let dict = try? JSONSerialization.jsonObject(with: data as Data, options: []) as? [String:Any] else{
            
                print(#function+"----"+"磁盘读取用户账户信息失败")
                
                return
        }
        
        // 使用字典设置属性
        let isSuccess = yy_modelSet(withJSON: dict ?? [:])
        
        if isSuccess == false {
            
            print(#function+"----"+"使用字典设置用户模型属性失败")
            
        }else {
            
            // 判断用户的token是否过期
            if expires_date?.compare(Date()) != .orderedDescending {
                
                print("token已过期")
                
                access_token = nil
                
                uid = nil
                
                // 删除保存用户账户信息文件
                try? FileManager.default.removeItem(atPath: filepath)
                
            }else{
                
                print("token正常")
                
            }
            
        }
        
    }
    
    
    override var description: String{
        
        return yy_modelDescription()
    }
}

// MARK:--保存用户账户信息（用json保存）
extension WPUserAccount {
    
    func saveUserAccount() {
        
        // 1. 模型转字典
        var dict = self.yy_modelToJSONObject() as? [String: Any] ?? [:]
        
        // 2. 删除不需要保存的键值
        dict.removeValue(forKey: "expires_in")
        
        // 3. 将字典dict进行序列化：dict -> Data
        guard let data = try? JSONSerialization.data(withJSONObject: dict, options: []),
            let filePath = userAccountFile.cz_appendDocumentDir()else{
                
                print(#function+"------"+"保存用户账户信息失败")
                
                return
        }
        
        // 4. 写入磁盘
        (data as NSData).write(toFile: filePath, atomically: true)
    }
}
